package com.vhall.component.service.rbac;


import com.vhall.component.entity.rbac.vo.*;

import java.util.List;

/**
 * @author dalong
 * @date 2021-05-11 16:30
 */
public interface RbacRoleService {

    /**
     * 获取角色信息
     *
     * @param reqVO
     * @return
     */
    RoleAdminGetRspVO getRoleForAdmin(RoleAdminGetReqVO reqVO);

    /**
     * 获取角色列表
     *
     * @param reqVO
     * @return
     */
    RoleAdminListRspVO getRoleListForAdmin(RoleAdminListReqVO reqVO);

    /**
     * 添加角色
     *
     * @param roleAdminAddReqVO 角色信息
     * @return
     */
    RoleAdminAddRspVO addRoleForAdmin(RoleAdminAddReqVO roleAdminAddReqVO);

    /**
     * 编辑角色
     *
     * @param roleAdminEditReqVO 角色信息
     * @return
     */
    Integer editRoleForAdmin(RoleAdminEditReqVO roleAdminEditReqVO);

    /**
     * 删除角色
     *
     * @param reqVo
     * @return
     */
    List<Integer> deleteRoleForAdmin(RoleAdminDeleteReqVO reqVo);

    /**
     * 获取角色信息
     *
     * @param roleId 角色ID
     * @param
     * @return
     */
    RoleVO getInfo(Integer roleId);

    /**
     * 按应用获取角色信息
     *
     * @param reqVO
     * @return
     */
    List<RoleVO> getRoleByApp(RoleGetListByAppReqVO reqVO);

    /**
     * 查询所有可用角色
     *
     * @return 角色列表
     */
    List<RoleVO> listAllRole();


    /**
     * 更新角色
     *
     * @param reqVO
     * @return
     */
    boolean update(RoleUpdateReqVO reqVO);

    /**
     * 添加角色
     *
     * @param reqVO
     * @return
     */
    RoleVO create(RoleCreateReqVO reqVO);

    /**
     * 删除角色
     *
     * @param reqVO
     * @return
     */
    boolean delete(RoleDeleteReqVO reqVO);

    /**
     * 获取角色信息
     *
     * @param roleId 角色ID
     * @return
     */
    RoleVO getInfoById(Integer roleId);

    Boolean editMenues(EditMenuesReqVO vo);


}
